home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
ask
/
ksd
/
source
/
ksdapi.s
< prev
next >
Wrap
Text File
|
1998-09-29
|
2KB
|
69 lines
*--------------------------------------------------------------------
* KSD API呼びだし
*--------------------------------------------------------------------
.include iocscall.mac
.include ksd.mac
.xref _DevCheck2
*--------------------------------------------------------------------
.text
.even
API .dc.l API_None * APIアドレス
KSDSym .dc.b 'AIG-KSD',0 * 隠しデバイス名
.even
*--------------------------------------------------------------------
*
.xdef _KSDSetAPI * int KSDSetAPI(void)
_KSDSetAPI: * APIアドレス取得(初期化)
* -> d0.l : <>0:正常終了(APIアドレス) , 0=KSDがない
clr.l -(sp) * NULL(デバイス名を格納する必要なし)
pea KSDSym(pc) * 隠しデバイス名
bsr _DevCheck2 * デバイスチェック : a0=DevHead
addq.l #8,sp
tst.b d0
bne @f * KSDがある
API_None:
* KSDがない
moveq.l #0,d0
rts
@@: * KSDがある
lea.l KSD_API(a0),a1 * アドレス保存
IOCS _B_LPEEK * スーパーバイザー領域を読むこともあるため
move.l d0,API * アドレス保存
rts
*--------------------------------------------------------------------
.xdef _KSDCallAPI * int KSDCallAPI(unchar command)
_KSDCallAPI: * API呼びだし
move.b 4+3(sp),d0 * d0.b=コマンド
*
.xdef KSDCallAPI * アセンブラー用
KSDCallAPI: * API呼びだし
* d0.b=コマンド
movem.l d3/a1,-(sp)
move.l d0,d3 * d0保存
clr.l a1
IOCS _B_SUPER * super visor mode
move.l d0,-(sp)
*
move.l d3,d0 * d0復帰
move.l API(pc),a1
jsr (a1) * API呼びだし(super visor領域のこともある)
*
move.l d0,d3 * d0保存
move.l (sp)+,d0
bmi @f * 元からsuper visorであった
move.l d0,a1
IOCS _B_SUPER * user mode(d0破壊)
@@: move.l d3,d0 * d0復帰
movem.l (sp)+,d3/a1
rts
*--------------------------------------------------------------------
.end